inspector: Do not show transient nodes
authorBenjamin Otte <otte@redhat.com>
Mon, 2 Nov 2015 19:25:09 +0000 (20:25 +0100)
committerBenjamin Otte <otte@redhat.com>
Mon, 2 Nov 2015 19:32:12 +0000 (20:32 +0100)
This is kind of a hack the way it's implemented, but it's necessary
for performance to ignore transient nodes as they get created all the
time (via gtk_style_context_save()) and invalidate the whole treeview.
And that causes resizes and redrawing of the treeview and performance of
the inspector would go down the drain now that we display a larger part
of the node tree.

gtk/inspector/gtktreemodelcssnode.c

index 196335e3da890dbeb4a36c934a4f8aeab9f99c32..ee55211d0bc44b291385f54f03c742f61eee0c64 100644 (file)
@@ -18,6 +18,7 @@
 #include "config.h"
 
 #include "gtktreemodelcssnode.h"
+#include "gtk/gtkcsstransientnodeprivate.h"
 
 struct _GtkTreeModelCssNodePrivate
 {
@@ -471,6 +472,9 @@ gtk_tree_model_css_node_connect_node (GtkTreeModelCssNode *model,
 {
   GtkCssNode *child;
 
+  if (GTK_IS_CSS_TRANSIENT_NODE (node))
+    return;
+
   g_object_ref (node);
 
   g_signal_connect_after (node, "node-added", G_CALLBACK (child_added_cb), model);
@@ -520,6 +524,9 @@ gtk_tree_model_css_node_disconnect_node (GtkTreeModelCssNode *model,
 {
   GtkCssNode *child;
 
+  if (GTK_IS_CSS_TRANSIENT_NODE (node))
+    return;
+
   g_signal_handlers_disconnect_by_func (node, G_CALLBACK (child_added_cb), model);
   g_signal_handlers_disconnect_by_func (node, G_CALLBACK (child_removed_cb), model);
   g_signal_handlers_disconnect_by_func (node, G_CALLBACK (notify_cb), model);